home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 684 / 684.xpi / chrome / fireftp.jar / content / js / etc / fireftpOverlay.js < prev    next >
Text File  |  2007-04-19  |  5KB  |  137 lines

  1. /* ideas for this bit of gpl'ed code came from ieview (http://ieview.mozdev.org)
  2.  * and that team is... Paul Roub, Ted Mielczarek, and Fabricio Campos Zuardi
  3.  * thanks to Scott Bentley for the suggestion
  4.  */
  5.  
  6. function loadFireFTP() {
  7.   var prefService    = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  8.   var prefSvc        = prefService.getBranch(null);
  9.  
  10.   var loadInTab      = false;
  11.   try {
  12.     loadInTab        = prefSvc.getIntPref("fireftp.loadmode");
  13.   } catch (ex) {
  14.     loadInTab = true;
  15.   }
  16.  
  17.   if (loadInTab) {
  18.     var theTab          = gBrowser.addTab('chrome://fireftp/content/');
  19.     theTab.label        = "FireFTP";
  20.     gBrowser.selectedTab = theTab;
  21.     var func = function () { gBrowser.setIcon(theTab, "chrome://fireftp/skin/icons/logo.png"); };
  22.     setTimeout(func, 500);
  23.   } else {
  24.     toOpenWindowByType('mozilla:fireftp', 'chrome://fireftp/content/');
  25.   }
  26. }
  27.  
  28. function loadFireFTPFromContentArea() {
  29.   loadFireFTPHelper(gBrowser.currentURI.spec);
  30. }
  31.  
  32. function loadFireFTPFromContext() {
  33.   loadFireFTPHelper(gContextMenu.getLinkURL());
  34. }
  35.  
  36. function loadFireFTPFromLink(event) {
  37.   var link = event.originalTarget;
  38.  
  39.   if (!link || !link.href) {
  40.     link = event.currentTarget;
  41.   }
  42.  
  43.   if (!link || !link.href) {
  44.     return true;
  45.   }
  46.  
  47.   event.preventDefault();
  48.   loadFireFTPHelper(link.href);
  49.   return false;
  50. }
  51.  
  52. function loadFireFTPHelper(uri) {
  53.   if (uri.toLowerCase().indexOf("ftp://") != 0) {
  54.     return;
  55.   }
  56.  
  57.   var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  58.   var prefBranch  = prefService.getBranch("fireftp.");
  59.   var sString  = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  60.   sString.data = uri;
  61.   prefBranch.setComplexValue("loadurl", Components.interfaces.nsISupportsString, sString);
  62.   loadFireFTP();
  63. }
  64.  
  65. function fireFTPInitListener(event) {
  66.   var menu       = document.getElementById("contentAreaContextMenu");
  67.   var appcontent = document.getElementById("appcontent");   // browser
  68.  
  69.   if (menu) {
  70.     menu.addEventListener("popupshowing", fireFTPContextListener, false);
  71.   }
  72.  
  73.   if (appcontent) {
  74.     appcontent.addEventListener("load", fireFTPLoadListener, true);
  75.   }
  76. }
  77.  
  78. function fireFTPCheckForcedListener(event) {
  79.   var doc               = event.originalTarget;
  80.   var prefService       = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  81.   var prefBranch        = prefService.getBranch("fireftp.");
  82.   var integrateftplinks = prefBranch.getBoolPref("integrateftplinks");
  83.  
  84.   var framed = event.originalTarget && window._content && window._content.document && (window._content.document != event.originalTarget);
  85.  
  86.   if (!integrateftplinks || framed) {
  87.     return;
  88.   }
  89.  
  90.   if (doc.location && doc.location.href && doc.location.href.toLowerCase().indexOf("ftp://") == 0) {
  91.     var ws = gBrowser.docShell.QueryInterface(Components.interfaces.nsIRefreshURI);
  92.  
  93.     if (ws) {
  94.       ws.cancelRefreshURITimers();
  95.     }
  96.  
  97.     var sString  = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
  98.     sString.data = window._content.document.documentURI;
  99.     prefBranch.setComplexValue("loadurl", Components.interfaces.nsISupportsString, sString);
  100.  
  101.     doc.location.href = "chrome://fireftp/content/fireftp.xul";
  102.   }
  103. }
  104.  
  105. function fireFTPContextListener(event) {
  106.   if (!gContextMenu) {
  107.     return;
  108.   }
  109.  
  110.   var uri = gContextMenu.onLink ? gContextMenu.getLinkURL() : gBrowser.currentURI.spec;
  111.  
  112.   document.getElementById("fireftpcontentarea").hidden =  gContextMenu.onLink || uri.toLowerCase().indexOf("ftp://") != 0;
  113.   document.getElementById("fireftpcontextmenu").hidden = !gContextMenu.onLink || uri.toLowerCase().indexOf("ftp://") != 0;
  114. }
  115.  
  116. function fireFTPLoadListener(event) {
  117.   var doc               = event.originalTarget;
  118.   var prefService       = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
  119.   var prefBranch        = prefService.getBranch("fireftp.");
  120.   var integrateftplinks = prefBranch.getBoolPref("integrateftplinks");
  121.  
  122.   if (!integrateftplinks || !doc || !doc.getElementsByTagName) {
  123.     return;
  124.   }
  125.  
  126.   var links = doc.getElementsByTagName('a');
  127.  
  128.   for (var x = 0; x < links.length; ++x) {
  129.     if (links[x] && links[x].href && links[x].href.toLowerCase().indexOf("ftp://") == 0) {
  130.       links[x].addEventListener('click', loadFireFTPFromLink, true);
  131.     }
  132.   }
  133. }
  134.  
  135. window.addEventListener("load",             fireFTPInitListener,        false);
  136. window.addEventListener("DOMContentLoaded", fireFTPCheckForcedListener, false);
  137.